The Location Linking Concept: A Basis for Verification of Code Using Pointers
نویسندگان
چکیده
Ultimately, any verifying compiler effort needs to be able to verify code that makes use of pointers, though language mechanisms for data abstraction, alias avoidance and control, or disciplined software development techniques may minimize the need for code that is directly based on pointering. It is also clear that the verification machinery of such as compiler must use specifications of components to reason about component-based software in order to be scalable. So this paper follows a natural question that arises by putting these two ideas together: Can the general machinery in a verifying compiler for component specificationbased verification also be used to verify code that uses typically built-in types, such as arrays and pointers, if those types are defined to have specifications similar to any other component? This paper answers the question in the affirmative by presenting a Location Linking Template, a concept that captures pointer behavior, and using it to verify the code of a simple data abstraction realized using pointers. Additionally, we note that the concept can be extended and realized so that different languages can plug in alternative implementations to give programmers the flexibility to choose manual memory management or automatic garbage collection depending on their performance concerns. 5
منابع مشابه
Compiler verification meets cross-language linking via data abstraction Citation
Many real programs are written in multiple different programming languages, and supporting this pattern creates challenges for formal compiler verification. We describe our Coq verification of a compiler for a high-level language, such that the compiler correctness theorem allows us to derive partial-correctness Hoare-logic theorems for programs built by linking the assembly code output by our ...
متن کاملSafe Pointers in SPARK 2014
In the context of deductive software verification, programs with pointers present a major challenge due to pointer aliasing. In this paper, we introduce pointers to SPARK, a well-defined subset of the Ada language, intended for formal verification of mission-critical software. Our solution is based on static alias analysis inspired by Rust's borrow-checker and affine types, and enforces the Con...
متن کاملAn Abstract, Approximation-Based Approach to Embedded Code Pointers and Partial-Correctness
To support higher-order type-like features such as embedded code pointers, in logic-based verification, one approach is to build assertion logic that combines logic and types. But it is not totally satisfactory in various aspects. Another approach is to use approximation in logic to simulate the behavior of types and typing invariants, yet polluting program specifications and proofs with comple...
متن کاملConverting C Pointers to Java References
We consider the problem of converting C pointers to the less exible concept of references. Our main application is converting scienti c applications from C to Java. We provide a general method to model essentially all features of pointers using references. The model is easily implemented in Java. We give optimizations that map key facilities like arrays and structures onto the obvious Java equi...
متن کاملElasto-plastic analysis of discontinuous medium using linearly conforming radial point interpolation method
In this paper, the linearly conforming enriched radial basis point interpolation method is implemented for the elasto-plastic analysis of discontinuous medium. The linear conformability of the method is satisfied by the application of stabilized nodal integration and the enrichment of radial basis functions is achieved by the addition of linear polynomial terms. To implement the method for the ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2012